package com.jrauto.CarAppBackend.service;

/**
 * @author : huiMing
 * Date : 2025年09月12日 10:49
 * @version V1.0
 */

import com.jrauto.CarAppBackend.entity.UserOnlineLog;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 用户在线状态服务接口
 */
public interface UserOnlineService {

    /**
     * 用户上线
     */
    void userOnline(Integer userId, String ipAddress);

    /**
     * 用户下线
     */
    void userOffline(Integer userId);

    /**
     * 检查用户是否在线
     */
    boolean isUserOnline(Integer userId);

    /**
     * 获取所有在线用户ID
     */
    Set<String> getOnlineUserIds();

    /**
     * 获取在线用户数量
     */
    long getOnlineUserCount();

    /**
     * 获取用户在线信息
     */
    Map<String, Object> getUserOnlineInfo(Integer userId);

    /**
     * 批量检查用户在线状态
     */
    Map<Integer, Boolean> batchCheckOnlineStatus(List<Integer> userIds);

    /**
     * 获取用户在线历史记录
     */
    List<UserOnlineLog> getUserOnlineHistory(Integer userId, int limit);

    /**
     * 获取在线统计数据
     */
    List<Object> getOnlineStatistics(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 清理过期数据
     */
    void cleanExpiredData();

    /**
     * 刷新用户在线状态（延长过期时间）
     */
    void refreshUserOnlineStatus(Integer userId);
}
